package com.stark.wechat.form;

import java.util.HashMap;
import java.util.Map;

/**
 * 方法执行结果对象。
 * @author Ben
 * @since 1.0.0
 * @version 1.0.0, 2017/8/5
 */
public class Result {
	private Boolean success;
	
	private Integer errcode;
	
	private String errmsg;
	
	private Map<String, Object> data;
	
	public Result() {
		success = true;
		errcode = 0;
		errmsg = "";
		data = new HashMap<>();
	}
	
	/**
	 * 实例化一个成功状态的对象。
	 * @return 成功状态的对象。
	 */
	public static Result success() {
		Result result = new Result();
		result.setSuccess(true);
		result.setErrcode(0);
		result.setErrmsg("请求成功");
		return result;
	}
	
	/**
	 * 实例化一个失败状态的对象。
	 * @return 失败状态的对象。
	 */
	public static Result fail() {
		Result result = new Result();
		result.setSuccess(false);
		return result;
	}
	
	/**
	 * 设置错误代码，并返回结果对象本身。
	 * @param errcode 错误代码。
	 * @return 结果对象本身。
	 */
	public Result errcode(Integer errcode) {
		this.errcode = errcode;
		return this;
	}
	
	/**
	 * 设置错误信息，并返回结果对象本身。
	 * @param errmsg 错误信息。
	 * @return 结果对象本身。
	 */
	public Result errmsg(String errmsg) {
		this.errmsg = errmsg;
		return this;
	}
	
	/**
	 * 添加属性，并返回结果对象本身。
	 * @param key 键。
	 * @param value 值。
	 * @return 结果对象本身。
	 */
	public Result addData(String key, Object value) {
		this.data.put(key, value);
		return this;
	}
	
	public boolean isSuccess() {
		return success;
	}

	public void setSuccess(boolean success) {
		this.success = success;
	}

	public Integer getErrcode() {
		return errcode;
	}

	public void setErrcode(Integer errcode) {
		this.errcode = errcode;
	}

	public String getErrmsg() {
		return errmsg;
	}

	public void setErrmsg(String errmsg) {
		this.errmsg = errmsg;
	}
	
	public Map<String, Object> getData() {
		return data;
	}

	public void setData(Map<String, Object> data) {
		this.data = data;
	}
}
